package golangAps

import (
	"context"
	"log/slog"
)

type ApsLog interface {
	Info(ctx context.Context, msg string, data ...any)
	Error(ctx context.Context, msg string, data ...any)
	Debug(ctx context.Context, msg string, data ...any)
	Warn(ctx context.Context, msg string, data ...any)
}

type DefaultApsLog struct {
}

func (l DefaultApsLog) Info(ctx context.Context, msg string, data ...any) {
	slog.InfoContext(ctx, msg, data...)
}

func (l DefaultApsLog) Error(ctx context.Context, msg string, data ...any) {
	slog.ErrorContext(ctx, msg, data...)
}

func (l DefaultApsLog) Debug(ctx context.Context, msg string, data ...any) {
	slog.DebugContext(ctx, msg, data...)
}
func (l DefaultApsLog) Warn(ctx context.Context, msg string, data ...any) {
	slog.WarnContext(ctx, msg, data...)

}

var DefaultLog ApsLog = DefaultApsLog{}

// SetDefaultLog
func SetDefaultLog(l ApsLog) {
	DefaultLog = l
}
